package gob.cgr.web.sgrh.managed;

import java.util.ArrayList;
import java.util.List;

import gob.cgr.sgrh.ejb.entidad.Persona;
import gob.cgr.sgrh.ejb.entidad.Personal;
import gob.cgr.web.sgrh.service.SigerhService;
import gob.cgr.web.sgrh.util.Utilitario;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;

@ManagedBean
@ViewScoped
public class PersonalBusquedaMB {

	@Inject
	private SigerhService service;
	private Personal personalConsulta;
	private Personal personalSelected;
	private String dniNuevo;
	private String mensajeNuevoPersonal;
	private List<Personal> lstPersonal=new ArrayList<Personal>();
	@ManagedProperty(value="#{personalMB}")
	private PersonalMB personalMB;
	public PersonalBusquedaMB() {
		// TODO Auto-generated constructor stub
		System.out.println("creado PersonalBusquedaMB ");
		
		
	}
@PostConstruct
private void iniciar(){
		
		
		setPersonalConsulta(new Personal());
		getPersonalConsulta().setIdPersona(new Persona());
		personalSelected=null;
		lstPersonal=new ArrayList<Personal>();
		dniNuevo=null;
		mensajeNuevoPersonal=null;
		
	}
	
	/**
	 * @return the personalSelected
	 */
	public Personal getPersonalSelected() {
		return personalSelected;
	}

	/**
	 * @param personalSelected the personalSelected to set
	 */
	public void setPersonalSelected(Personal personalSelected) {
		this.personalSelected = personalSelected;
	}

	public Personal getPersonalConsulta() {
		return personalConsulta;
	}

	public void setPersonalConsulta(Personal personalConsulta) {
		this.personalConsulta = personalConsulta;
	}

	public String getDniNuevo() {
		return dniNuevo;
	}

	public void setDniNuevo(String dniNuevo) {
		this.dniNuevo = dniNuevo;
	}

	public String getMensajeNuevoPersonal() {
		return mensajeNuevoPersonal;
	}

	public void setMensajeNuevoPersonal(String mensajeNuevoPersonal) {
		this.mensajeNuevoPersonal = mensajeNuevoPersonal;
	}

	/**
	 * @return the lstPersonal
	 */
	public List<Personal> getLstPersonal() {
		return lstPersonal;
	}

	/**
	 * @param lstPersonal the lstPersonal to set
	 */
	public void setLstPersonal(ArrayList<Personal> lstPersonal) {
		this.lstPersonal = lstPersonal;
	}
	
	public void consultarPersonal(){
		System.out.println("buscando..");
		personalSelected=null;
		lstPersonal=service.buscarPersonal(personalConsulta);
		System.out.println("hallado .."+lstPersonal);
	}
	public String doEdit(){
		if(personalSelected==null){
			mostrarMensaje("Debe seleccionar un personal");
			return null;
		}
		personalMB.setColaborador(personalSelected);
		
		//
		//if(colaborador.getIdPersona()!=null)
		//personalMB.getAmbito().setearUbigeo(personalMB.getColaborador().getIdPersona().getLugarNacimiento());
		personalMB.iniciar();
		personalMB.setCheckPage("ok");
		return "editarPersonal";
		
	}

	
	public String doEditForzado(){
		if(Utilitario.isNullOrEmpty(dniNuevo)){
			mostrarMensaje("Ingrese el DNI");
			return "";
		}
		personalConsulta.getIdPersona().setNroDocumento(dniNuevo);
		personalSelected=personalConsulta;
		return doEdit();
	}
	public void mostrarMensaje(String msj){
		 FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,"Alerta", msj));  
	}
	public String doNuevo(){
		mensajeNuevoPersonal=null;
		Persona p=service.buscarPersona(dniNuevo);
		//dniNuevo=null;
		if(p!=null){
			//System.out.println("personal hallado preguntando si es personal ");
			if(p.getPersonalList()!=null &&p.getPersonalList().size()>0 ){
				mensajeNuevoPersonal="El DNI corresponde a un personal ya registrado, Desea verlo?";
				personalConsulta=p.getPersonalList().get(0);
				return null;
			}
			//System.out.println("personal hallado no es personal enviando a edicion");
			
			personalConsulta.setIdPersona(p);
			personalSelected=personalConsulta;
			return doEdit();
				
		
		}else{
			mensajeNuevoPersonal="No se ha hallado a ninguna persona previa con el DNI ingresado, Desea continuar de todos modos a registrar al nuevo Personal?";
			
		}
		return "";
	}
	public void cancelarNuevo(){
		System.out.println("cancelando nuevo..");
		setPersonalConsulta(new Personal());
		getPersonalConsulta().setIdPersona(new Persona());
		//personalSelected=null;
		//lstPersonal=new ArrayList<Personal>();
		dniNuevo=null;
		mensajeNuevoPersonal=null;
	
	}
	public PersonalMB getPersonalMB() {
		return personalMB;
	}
	public void setPersonalMB(PersonalMB personalMB) {
		this.personalMB = personalMB;
	}
	
	
	
}
